Version 0.0 : 01/08/2021
rev : 26/04/2022
Restauration Digit3000
avec PIC18F27K42
Datasheet MCU ( pdip28 ,PIC18FxxK42
DS 40001919B rev 2017)
Prototype sur breadboard et tests sur ancien
modele Digit3000
Digit3000
original
Schéma
final D3000
PCB
Digit3000 réactualisé
Affectation
des pins MCU
Adaptation et extensions de fonctionnalités
Nouveau
Clavier JXS
Software
Digit 3000 ( MikroC 7.60 ) (rev
20/03/2022)
Application
BlueElectronics (Android)
Test
Final Digit 3000 (consignation
via terminal )
Migration vers MPLABX et XC8 (.. en cours 28/03/2022)
Mode d'Emploi
Original
Circuit Imprimés et
Montage (virtuel) des composants
PCB en double face , crées par Henri TOUSSAINT (avec Kicad )
Schéma final Clavier Digit3000
Schema_Terminal_2022-0330.pdf
version avec extensions ! et nouveau Clavier
![]() |
![]() |
Cavalier Z1 | BCK+USI. |
![]() |
![]() |
Connecteur Alim_12v-0v IN 12v et 3 leds infos | Connecteur Relais Port IN OUT et Deport 3 Leds |
PCB réalisés par Henri TOUSSAINT ,
avec Kiccad (à contacter pour
demande de PCB ou PIC )
Liste des
composants :
Composants_Carte-Mère.pdf
Composants_Carte-Fille.pdf
Composants_Carte-Soeur.pdf
Claviers JXS/12B series
Carte-Sur : Interface Clavier JXS-12B series (extraits)
Partie du schéma final avec Clavier JXS-12B series
Clavier JXS-12B : Montage du 2ème prototype dessai : en
cours !
Affectation des pins du MCU PIC18F27K42
Rappel : version en boitier PDIP28
Pin 28 RB7 --x x-----------------------ICSP
Data ..... ou choix RA7
Pin 27 RB6 --x x-----------------------ICSP Clock.....ou choix RA7
Pin 26 RB5 Ouput <---- Entree Analogique 0-4095 pts ( infos
externes voyant leds)
Pin 25 RB4 Ouput --> Relais 4
Pin 24 RB3 Ouput --> Relais 3
Pin 23 RB2 Ouput --> Relais 2
Pin 22 RB1 Ouput --> Relais 1
Pin 21 RB0 Input <--- OU à diodes sur les 4 lignes Clavier
Pin 20 VDD ---------------- ---------+5V
Pin 19 Vss ----------------------------Gnd fil noir cable
prolific
Pin 18 RC7 Input RX UART <------- Keyboard PC.. fil Vert cable
prolific
Pin 17 RC6 Ouput TX UART ------> Display PC ......fil Blanc
cable prolific
Pin 16 RC5 Ouput ---> Led RG_Red
Pin 15 RC4 Ouput ---> Led RG_Green
Pin 14 RC3 Input <---- BP Reset Usine
Pin 13 RC2 Ouput ---> alarme externe
Pin 12 RC1 Input <---- BP Restauration => Reset logiciel
Pin 11 RC0 Output --> Buzzer
Pin 10 RA6 Ouput ---> Keyb_Col3
fonction (choix RB6 RB7) :
Pin 9 RA7 Input ----> Entree distante fonction
Pin 9 RA7 Ouput ----> Relais Aux
distant
Pin 8 VSS ------------ Gnd
Pin 7 RA5 Ouput ----> Keyb_Col2
Pin 6 RA4 Ouput ----> Keyb_Col1
Pin 5 RA3 input <----- Keyb_Ligne 4
Pin 4 RA2 input <----- Keyb_Ligne 3
Pin 3 RA1 input <----- Keyb_Ligne 2
Pin 2 RA0 input <----- Keyb_Ligne 1
Pin 1 RE3 Input MCLR Reset <------------ICSP PGRM
|----x x----/0V cavalier ou BP RESET
Nouvelle Version DIGIT 3000 (2022)
Adaptation et extensions de
fonctionnalités décidées ...
Modifications (mars 2022)
Création dinterfaces de compatibilité avec
plusieurs types de claviers matriciels
- Clavier matriciel 3 lignes sur 4 colonnes : Digit3000 (modèle
objet de la restauration)
- Clavier matriciel 4 lignes sur 3 colonnes : JXS 12B series (modèle
IP65)
- Creation dune carte-mère adaptable aux 2 modèles de
claviers
Ajout de fonctions supplémentaires
- Port auxiliaire configurable (RA7) :
* Cavalier de selection (Z1) sur carte (via les ports RB6-RB7 de
lICSP)
* En entree (AUXin +12v) borne 4 du bornier B6
* En sortie (AUXout) sur collecteur ouvert borne 4 du bornier B6
RA7 = Haut , AUXout = GND (0v commun)
RA7 = Bas , AUXout = "en lair"
- Reprise de linfo externe 3 états sur une entrée
analogique (RB5)
- Poussoirs différenciés SW1 et SW2, pouvant être déportés
de la carte :
* SW1 (RC3) réinitialisation "Usine"
* SW2 (RC1) restauration des etats et parametrages initiaux
- Visualisation des états et commandes directes par Bluetooth
via l'UART :
* Séquence de modification du code PIN (Voir plus loin dans la
partie Bluetooth
Réorganiser les Ports du PIC
- RA7 Port Auxiliaire configurable en Entree ou Sortie
- RB5 Entrée analogique : 3 états info externes
- RB6 ICSP (PGC) + Configuration Port Auxiliaire OUT (0V via 2.2kO
/ Z1)
- RB7 ICSP (PGC) + Configuration Port Auxiliaire IN (0V via 2.2kO
/ Z1)
- RC1 BP SW2 ("BCK") via 0v : Restauration parametrages
initiaux
- RC3 BP SW1 ("USI") via 0v : Reinitialisation "Usine"
- RC4 Led Bicolore : Vert Note : ajout soft dun ET (Software)
pour remplacer Led Bleu supprime
- RC5 Led Bicolore : Rouge Note : ajout soft dun ET (software)
pour remplacer Led Bleu supprime
Rajout
de 3 infos d'états Externes
But : récuperer les 3 infos , qui sont
affichées sur les 3 leds en face avant du plastron clavier
version DIGIT3000
Ces infos proviennent du comparateur à fenêtre TCA965, pilotant
les sorties d'un CD40106
( trigger CMOS), niveau 12V, alimentant les 3 leds : Il n'y
a donc qu'une seule des 3 sorties active à la fois !
Il n'y a pas assez d'entrees logiques dispo sur le PIC pour une
exploitation directe de chacune de ces 3 infos !
Elles seront combinées pour créer 3 niveaux facilement
reperables/decodables sur lentrée analogique RB5.
L'interface Hardware :
Interface des sorties de visualisation des 3 etats de la centrale
dalarme vers RB5 :
Définition des seuils ADC 12 bits (maxi ADC =4095)
nota:
On fait l'init ADC au demarrage programme et
La mesure ADC est faite toute les 500mS , via l'interrupt Timer4
!
void Interrupt_Timer4()
iv IVT_TMR4 ics ICS_AUTO // (execution every 500mS)
{
if ((TMR4IF_bit==1) && ( TMR4IE_bit==1) )
{
if ( Mode_RA7<2) Mesure_RB5=ADC_Get_Sample(13);
... etc ....
leds | VERT | JAUNE | ROUGE | |
seuil Haut | 1500 | 2400 | 3500 | points |
seuil (arrondi) | 1300 | 2100 | 3200 | points |
seuil Bas | 1000 | 1900 | 3000 | points |
R pied | 680 | 1800 | 6800 | ohms |
etat vrai => | FERME | OUVERT | ALARME |
La priorité d'affichage est celle du niveau de
tension !
soit FERME.,OUVERT,,ALARME..sur l'appli Android BlueElctronics
distante
on a donc , normalement, en quasi permanence :
Voyant Vert (texte : Fermé), autres voyants eteints
si le Portail est Ouvert : voyant Jaune (texte : Ouvert)
si la Centrale d'Alarme est en service Alarme , Voyant Rouge (texte:Alarme)
Masquage des Infos exterieurs non activées (Voyants sur
appli Android):
Remarque :
on ne peut pas Masquer completement l'objet "Voyant"
avec cette application android
Pour ne visualiser qu'une seule entrée active parmis les 3
par contre on peut changer la couleur du voyant .. et le mettre
en Noir, bien moins visible sur fond Noir !
Ce traitement se fait dans la partie "Attente 4 frappes
clavier" (3sec maxi) d 'appui touche
if(Mode_RA7<2)
// Clavier en mode Extensions activées
{
strConstRamCpy(CRam1,"*H65536*;"); // affiche ma mesure
ADC en points
WordToStr(Mesure_RB5,CRam1+2);
*(CRam1+7)='*'; Print(CRam1);
if( (Mesure_RB5>SeuilB_12V) && (Mesure_RB5<SeuilH_12V))
Presence_12V=1; else Presence_12V=0;
if( (Mesure_RB5>SeuilB_Ouvrant) && (Mesure_RB5<SeuilH_Ouvrant))
Etat_Ouvrant=1; else Etat_Ouvrant=0;
if( (Mesure_RB5>SeuilB_Alarme) && (Mesure_RB5<SeuilH_Alarme))
Etat_Alarme_Maison=1; else Etat_Alarme_Maison=0;
if(Etat_Alarme_Maison==1) CPrint("Alarme *LR255G0B0*;");
else CPrint("*LR0G0B0*;");
if(Etat_Ouvrant==1) CPrint("Portail *RR255G0B0*;");
else CPrint("*RR0G0B0*;");
if(Presence_12V==1) CPrint("12V *PR255G0B0*;"); else
CPrint("*PR0G0B0*;");
.... etc
}
exemple de Codage pour
le voyant Alarme ROUGE (reconnu par l'application BlueElectronics)
:
*L = tag de reconnaissance
R255G0B0 = couleur RGB Rouge=255= maxi ( Vert=0 Bleu=0)
* = terminateur de commande
; séparateur de commande
In fine
le codage clavier pourra etre modifie :
* 100% Manuel, via les touches clavier, en
suivant un protocole bien defini par appui successif de plusieurs
sequences de touches
le codage clavier pourra etre retabli :
* commande sur carte BP BCK : RAZ le compteur
sabotages et remonte les etats et parametrages initiaux (sauvegardes
en EEPROM)
* commande distante BP Restore : RAZ le compteur
sabotages et remonte les etats et parametrages initiaux (sauvegardes
en EEPROM)
* FORCAGE distant via Terminal ou BlueTooth :
commande Super User BP SEND
le codage clavier pourra etre réinitialisé « usine » :
* commande sur carte BP USI : RAZ le compteur
sabotages et remonte les états et parametrages Usine
* commande distante BP RESET MCU, sauf si on
inhibe l'ecriture (écrasement) eeprom dans MPLABX IPE.
* un rechargement du programme via ICSP
Securite:
* un Nombre de Sabotage >2 inhibe tout et genere une alarme
visuelle et sonore de 120sec
mais permet une reprogrammation (si on connait le code de
programmation !)
sinon, il faudra une réinitialisation...
* rappel des codes didentification :
ID=0 ? Programmation ; ID=1 a 5 ? Relais 1 a 4 ; ID=5 ? Port
Auxiliaire en mode Sortie
* rappel des codes de configuration (CF) :
mode de commande des sorties(bits 1,2,3,4,5 dont le bit 0?non
utilise)
CF=0 ? Bistable ON/OFF ; CF=1? Monostable 1sec ; CF=9?
Déprogramme (relais inactif au repos)
23/03/2022
Réactualisation suite au risque encouru par le PICKIT4
si un strap est resté en place
La 120 ohms strappant le signal Data ou Clock ICSP
Test réalisés pour definir une resistance de rappel au 0V
logique, suffisament faible pour garantir un ZERO LOGIQUE
et suffisament élévée pour ne pas affecter la programmation
ICSP avec Pickit4 connecté aussi.
le PortB a toutes ses Pul Up activées WPUB=0xFF;
pour avoir justement un niveau LOGIQUE UN sans strap vers Gnd.
Les entrees sont par defaut en mode Trigger ,
forte immunité ! Le maxima du niveau Zero logique est de 2V !
Une R de 2,2 à 2,7 K est suffisant pour obtenir un 0 Logique
franc.
Remarque :
sans pull up , ni pull down l'entree est fluctuante .. un simple
multimetre connecté (Z= 10Mhoms) sur l'entrée donne déja un
ZERO logique !
Conclusion : remplacement de R=120 ohms par 2,2K ou 2,7K
detail sur ces tests : 2022_0323_Test_choix_RA7_via_RB6-RB7.pdf
Elaborer un chronogramme du fonctionnement
global (realise via Excel par Babar64)
Etablir un ordinogramme général du
programme (réalise avec draw.io.exe par
Paulfjujo)
( réalisé avec draw.io.exe)
Versions HTML (interactives) :
Diagramme_Clavier_Digit4000_2022-0322.drawio.html
Dans ce fichier, vous pouvez Clicker sur les conteneurs annexes :
![]() |
![]() |
le contenu des containers :
Saisie_Code_Container.drawio.html
Toute_premiere_init_Container.drawio.html
Timer4_Clavier.drawio.html
Redéfinition des
valeurs ID et CF dans les séquences de codes
Détail fonctionalité sur pin RA7 : Est fonction de l'etat des 2
pins RB7 et RB6 (pins ICSP !),
selon la position du cavalier double (Z1) sur la Carte Mère
le pole 4 du bornier B6 pole 4 est Entree ou Sortie.
- Signalisation des 3 infos externes :
* Rappel : infos recupérées via une Entrée Analogique sur RB5
+ 3 fenetres de seuils
- 1 seul libellé changeant en fonction de l'info
- 1 seul voyant (Rouge,Jaune (Ouvert)ou VERT)
Rajout du relais Aux RA7 comme 5em relais,
traitement idem que les relais 1,2,3,4
Rajout Sequence Autorisation usage Mode BlueTooth
mode 0 = Bloqué .. sauf Index et Nb de sabotage
mode 1= Pic ---> B.T... tout le suivi de programme PIC
mode 2 = PIC <==> B.T. tout le suivi de programme PIC,
avec en plus , commandes externes B.T.
-> PIC
Acces aux melodies ...il faut etre indulgent
: car c'est un signal tout ou rien sur buzzer !
via une table de pointeurs sur des tables contenant 5 bytes par
note : 3 bytes pour la frequence, 2bytes pour la durée.
static unsigned char * Liste_Melodie[]=
{Mission_Impossible,BOLERO,Smoke,PinkPanther,LaureletHardy,Alfred_Hitchcok,axelf,Something,Action_Relais,GimmeGim};
//0 unsigned char Mission_Impossible[178] 5sec ou 20 sec
//1 unsigned char BOLERO[249]
//2 unsigned char Smoke[161] //Smoke On The Troubled water
//3 unsigned char PinkPanther[143]
//4 unsigned char LaureletHardy[168] 8sec
//5 unsigned char Alfred_Hitchcok[395] 10 sec
//6 unsigned char axelf[122] 5 sec
//7 unsigned char Something[xx] xx sec
//8 unsigned char Action_Relais[] 1 sec morceau de GimmeGim
//9 unsigned char GimmeGim[]
ou table de notes ..pour Au_clair_de_la_lune()
Ces "Melodies"
sont utilisées pour avertir l'opérateur d'une opération tres
particuliere ...
Usage du NCO1 : generateur de frequence hardware .... pour cette
fonctionalité
Contenu Eeprom
Routines triées par tailles
Edit Project
22/03/2022
Traçage du
lancement de l'application :
Terminal YAT connexté sur TX uart
SOFTWARE
(new Digit 3000 )
Projet : Clavier_18F27K42_DIGIT_MikroC_3000_2022-04.mcppi
Main code : Clavier_DIGIT4000_18F27K42_MikroC_2022_0403.c
Chargeur : Clavier_18F27K42_DIGIT_MikroC_2022-04.hex
Config projet : P18F27K42_Fosc_Interne_IVT_interrupts_16x4_PLL_64MHz.cfgsch
Eeprom : Clavier_18F27K42_DIGIT_3000_2022-0317.ihex
Config : Clavier_18F27K42_DIGIT_MikroC_3000_2022-04.cfg
Musique Rttl : Melodies_Clavier_en_Ram_2022-0319_to_include.txt
config. terminal YAT : Terminal_HC06_Digicode3000_2022-0318.yat
***********************************
IMPORTANT :
cette Version MikroC n'est plus maintenue ...
voir migration MPLABX XC8 ..
************************************
Test
Final (version 3000)
Design & Configuration sur Tablette LENOVO TAB37
( bluetoothelectronics Application Android )
rev 19/03/2022
// Rappel des Flags utilisés dans L' appli PIC
& Android BlueElectronic
Masquage ou non , réalisé via l'appli PIC et config
Taille Ecran sur Lenovo TAB37 = 155x86mm
Sortie RELAIS ou Entree sur RA7 :
Traitement
dans l'appli du PIC // if(Mode_RA7<2) { strConstRamCpy(CRam1,"*H65536*;"); // Masquage BP ou etat suivant mode RA7 if (Mode_RA7==ENTREE) { // valide libellé AUx Input et efface Aux Relais CPrint("*UAux Input*;*W *;*BR255G0B0*;"); } if (Mode_RA7==SORTIE) { // valide Aux Relai Libelle efface libelle input et voyant noirci CPrint("*W Aux Relais*;*U *;*BR0G0B0*;"); // voyant NOIR } if (Mode_RA7==NOTUSED) { // efface les 2 libelles Aux Relais et Aux Input et voyant CPrint("*W *;*U *;*BR0G255B0*;"); } CPrint("\r\n"); } // if Mode_RA7; |
traitement
commande envoyée par appli Android p0=strstr(Buffer1,"xxxON"); |
Management Entree et adaptation objets graphiques |
Traitement cde distante du relais Aux |
Tests avec Terminal YAT en espion sur
UART
2022_0320_Test Programme_Digit_3000.docx
2022_0319_Test Programme_Clavier_DIGIT3000_avec_Startrail7_Phone.docx
2022_0320_Test Programme_Clavier_DIGIT3000.docx
Application
BlueElectronics
Tablette Lenovo Ecran 15.5x8.6 cm 7"
Nota: Pour
récuperer le fichier de config application BlueElectronics ,
stocké sur la tablette :
.. connectée au PC via cordon USB
peripherique multimedia
sur PC :
mémoire de stockage USB
Ce PC\Lenovo TAB3 7 Essential\Mémoire de stockage USB\keuwlsoft
fichier de configuration :
Digit3000_Lenovo_TAB37_2022-0317.kwl
dommage,on ne peut pas MASQUER ou DEPLACER les
objets via commandes externes !
...possible avec Appinventor2 !
Test BlueTooth + Terminal
nota :
115200 baud s!
pas de CR, LF sur commandes AT du HC06 !
mais CR LF sur échanges BlueElectronics Android Application
Affectation code PIN HC06 via le CLAVIER
.. OK
Test commande relais R1 à R5 : ON ou OFF ...OK (états
mémorisés)
Commandes relais #1 à #5 .. OK
Commande RESET MCU ... OK
Commande Restauration .OK
Test sur phone SFR Startrail 7 :
Panel 12 BlueElectronics ...commandes relais
variante GROS boutons , pour GROS DOIGTS , mais
Panel Reduit en fonctionnalités
Digit3000_2022-0319_R.kwl
videos :
Digit3000_Startrail_Panel_Reduit_2022-0319.webm
Digit3000_sur_Startrail7__20220319.webm
Documents
Ordinogramme_Clavier_Digit3000 rev 22/03/2022
(pdf)
Ordinogramme_Saisie_Code_Container rev 22/03/2022
(pdf)
MODE OPERATOIRE rev 02/04/2022 (Doc)
CHRONOGRAMME_ rev 21/03/2022 (Doc)
CARACTERISTIQUES rev
02/04/ 2022 (Doc)